// 扩展中国剩余定理
// m1, m2, m3 ... 并不是两两互质
// 测试链接 ：https://www.luogu.com.cn/problem/P4777
// 相关帖子 ：https://www.cnblogs.com/dx123/p/16743811.html
// 相关帖子 ：https://oi-wiki.org/math/number-theory/crt/
// 提交以下的code，可以直接通过

#include <bits/stdc++.h>

using namespace std;

#define ll __int128
const int MAXN = 100001;
ll n, m[MAXN], r[MAXN];

ll exgcd(ll a, ll b, ll& x, ll& y)
{
    if(b == 0)
    {
        x = 1;
        y = 0;
        return a;
    }
    ll x1, y1, d;
    d = exgcd(b, a % b, x1, y1);
    x = y1, y = x1 - a / b * y1;
    return d;
}

ll EXCRT(ll* m, ll* r)
{
    ll m1, m2, r1, r2, x, y;
    m1 = m[1], r1 = r[1];
    // 将 n 个同余方程进行 n - 1 次合并
    for(int i = 2; i <= n; ++i)
    {
        m2 = m[i], r2 = r[i];
        ll d = exgcd(m1, m2, x, y);
        if((r2 - r1) % d != 0) return -1;
        x = x * (r2 - r1) / d; // 特解可能为负数
        x = (x % (m2 / d) + m2 / d) % (m2 / d); // 将特解修正成最小正整数
        r1 = m1 * x + r1;
        m1 = m1 * m2 / d;
    }
    return (r1 % m1 + m1) % m1;
}

int main()
{
    scanf("%lld", &n);
    for(int i = 1; i <= n; ++i) scanf("%lld%lld", &m[i], &r[i]);
    printf("%lld\n", EXCRT(m, r));
    
    return 0;
}